#ifndef EXCEPTIONS_HPP
#define EXCEPTIONS_HPP
#include "CommonException.hpp"

using namespace OOPUtils;

class FormatNotSupportException : public OOPException
{

public:

  virtual wstring getReason () const throw ()
  {
    return L"The format of the image is not supported";
  }

};

class NoObjectInSelectRegionException : public OOPException
{

public:

  virtual wstring getReason () const throw ()
  {
    return L"No object in select region";
  }

};

class InvalidFilterCoreException : public OOPException
{

public:

  virtual wstring getReason () const throw ()
  {
    return L"The filter core is invalid";
  }

};


class StructElemAndSizeNotMatchException : public OOPException
{

public:

  virtual wstring getReason () const throw ()
  {
    return L"The struct elem array doesn't match the size specified";
  }

};

class CoreCenterOutOfBoundaryException : public OOPException
{

public:

  virtual wstring getReason () const throw ()
  {
    return L"The center specified is out of boundary";
  }

};

class CoreEmptyException : public OOPException
{

public:

  virtual wstring getReason () const throw ()
  {
    return L"Core cannot be empty";
  }

};

#endif